|
This page last changed on May 06, 2010 by dcline.
About Video Transcoding
EITS video needs to be converted both into a format the AVED can process and into a format that VARS can playout. Video remains in compressed files throughout most of the data handling, until the conversion from AVI to PPM's for AVED processing. Most transcoding is done as a Condor job on the machine Somniosus or the AVED beowulf cluster. There are two paths for video conversion: one for AVED (starts with ASF to AVI conversion), and the other for VARS (ASF to MOV). The reason for this is noted below:
 | In testing it was discovered that decoding the DX50 codec inside a MOV container is problematic in Linux. The tools to do this are *very* slow (1-2 frames per second), and improvement of the decode speed to 30-60 frames/second) is achieved by converting the ASF to a AVI container because there is a better tool for this called transcode. The content will be identical, it's just a different container. Time code will also remain in tact because it can be added with transcode. |
Activity Diagram of Video Transcoding for EITS Processing (need to include transcoding of AVED mpeg for VARS playback)

Video Specification
EITS will be producing ASF containers with video codec: DX50 (Divx) and audo codec:AAC.
This video can only be played with:
- VLC player
- DIVX player
- QuickTime player (Mac OS X) with the following installed:
- Flip4Mac. Flip4Mac is free. This also allows the editing and conversion of ASF containers using the various QuickTime API's.
- DivX codec, also free. Required to work with the DX50 video encoding
ASF Conversion to QuickTime
For the EITS experiment, the ASF container will be converted to QuickTime, and a time code track based on the UTC encoded time in the file name (see File naming convention below) will be added to the QuickTime container. The rationale for doing this is that VARS requires a QuickTime container with a time code track.
QuickTime Tracks Number Description:
- Video
- TimeCode
- Timecode will be UTC time
- Audio
- Audio is from Hydrophone. It's added for the cool factor. The audio used for analysis will be stored in a seperate file
ASF Conversion to AVI
The AVED workflow does not support Quicktime container with the DX50 codec due to lack of support for decoding the DX50 in a Quicktime container. DX50 is a codec from DIVX and support for it is poor at best in Linux, therefore, for the EITS experiment ASF files will be converted to AVI. AVED will then decompress the AVI files to PPM frames, and time code will be added to individual PPM frames before processing.
File naming convention
All files files will be named for the UTC time of the first frame following the ISO8601 conventions. For example: 20080607T120256.mov,20080607T120256.avi. For example, 20080607T120256.mov represents a clip recoded on June 7th, 2005 (06-07-2008), and the recording started at 12:02:56 UTC.
QuickTime container requirements
Notes
From Danelle Cline on 2007-05-21:
I was able to transcode the lvtest.asf file Lee sent. The converted asf file with and without timecode are in your tempbox named 20070511T09180100.mov, 20070511T09180100-tc.mov.
The file isn't streamed. Can you use this file for playback in VARS, or can you add streaming to this ? Or, maybe other 3rd party tools to convert this file separately for VARS ? Linux utilities exist to add streaming hints so let me know if you want me to add the hints for testing.
I converted the file to a MOV container using Linux utilities and appended the timecode your Java utility. It took ~ 30 minutes to convert the 48 minute clip. This is per the diagram describing video transcoding here: http://oceana.shore.mbari.org:8081/display/EITS/EITS+Video
In the EITS experiment, I will be using 20070511T09180100-tc.mov as input to AVED processing (but without the -tc appended - this was added for testing).
There are two untested items in this transcoding flow: hinting and I haven't tested the audio track - I removed it for now because I had some problems with the audio track in his old test file and just haven't gotten around to looking into fixing this.
The timecode track is out of sync with the video because Lee encoded the frame rate incorrectly, but it's a starting point. When we get another video clip from him and some ancillary data we can do some real testing.
From Brian Schlining on 2007-05-21:
I can add streaming hints; it may be more time efficient to do the conversion to a hinted quicktime movie in a single step though. We'll need to discuss and play around with the workflow to find what works best.
We'll need to figure out where (Linux or Mac) that we want to do the video conversion. I have 2 scripts that I've used for processing video:
1) hintmovie.groovy. Converts any movie to a streaming-hinted quicktime movie. I'm running it right now on the lvtest.asf...it seems to be working but I'll keep you updated when it's finished (It looks like it's going to take about 30+ minutes or so;it's running on a pretty ancient machine).
2) addtimecode.groovy. Adds a timecode track. Takes about 2 seconds.
I'll send you the result of running lvtest.asf through these 2 scripts so you can see if the output is useful for AVED processing.
From Danelle Cline on 2007-05-21:
RE>> We'll need to figure out where (Linux or Mac) that we want to do the video conversion. I have 2 scripts that I've used for processing video:
1) hintmovie.groovy. Converts any movie to a streaming-hinted quicktime movie. I'm running it right now on the lvtest.asf...it seems to be working but I'll keep you updated when it's finished (It looks like it's going to take about 30+ minutes or so;it's running on a pretty ancient machine).
2) addtimecode.groovy. Adds a timecode track. Takes about 2 seconds.
For workflow testing, I'm running hintmovie.groovy on the computer ULUA but this should be moved to a dedicated Mac/Windows computer for the experiment. What is needed to move this, is to install Condor as an "execute-only" node and modify the Condor job.description and scripts slightly. Not a huge deal. I'm working on posting Condor setup instructions for this in Confluence.
This has been installed as a Condor job on the computer somniosus. See details on Condor installation here for more information.
|